package br.edu.udc.sistemas.ia5.dao;

import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Vector;

import br.edu.udc.sistemas.ia5.database.Database;
import br.edu.udc.sistemas.ia5.entity.Fornecedor;

public class DaoFornecedor {
		
	public void save (Fornecedor fornecedor){		
		String sql;
		if (this.findByPrimaryKey(fornecedor) == null){
			sql = "insert into Fornecedor (idFornecedor, razaoSocial, cnpj, inscEstadual, rua, numero, bairro, cidade, estado, cep, telefone, site, email)"+
					" values ("+fornecedor.getId()+", '"+fornecedor.getRazaoSocial()+"', '"+fornecedor.getCnpj()+"', '"+fornecedor.getInscEstadual()+"', '"
					+ fornecedor.getRua()+"', '"+fornecedor.getNumero()+"', '"+fornecedor.getBairro()+"', '"+fornecedor.getCidade()+"', '"+fornecedor.getEstado()+
					"', '"+fornecedor.getCep()+"', '"+fornecedor.getTelefone()+"', '"+fornecedor.getSite()+"', '"+fornecedor.getEmail()+"')";
		} else {
			sql = "update Fornecedor set razaoSocial = '"+fornecedor.getRazaoSocial()+"', cnpj = '"+fornecedor.getCnpj()+"', inscEstadual = '"+fornecedor.getInscEstadual()+
					"', rua = '"+fornecedor.getRua()+"', numero = '"+fornecedor.getNumero()+"', bairro = '"+fornecedor.getBairro()+"', cidade = '"+fornecedor.getCidade()+
					"', estado = '"+fornecedor.getEstado()+"', cep = '"+fornecedor.getCep()+"', telefone = '"+fornecedor.getTelefone()+"', site = '"+fornecedor.getSite()+
					"', email = '"+fornecedor.getEmail()+"'";
		}
		System.out.println(sql);
		Database database = new Database();
		try {
			Statement stmt = database.getConnection().createStatement();
			stmt.executeUpdate(sql);
			database.getConnection().commit();
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}
	}
	
	public void delete(Fornecedor fornecedor){
		if ((fornecedor != null) && (fornecedor.getId() != null)){
			Database database = new Database();
			try {
				Statement stmt = database.getConnection().createStatement();
				String sql = "delete from Fornecedor where idFornecedor = "+fornecedor.getId();
				stmt.executeUpdate(sql);
				database.getConnection().commit();
			} catch (Exception e) {
				// TODO: handle exception
				e.printStackTrace();
			}
		}
	}
	
	public Fornecedor[] find(Fornecedor fornecedor){
		try {
			String sql = "select idFornecedor, razaoSocial, cnpj, inscEstadual, rua, numero, bairro, cidade, estado, cep, telefone, site, email from Fornecedor";
			if (fornecedor != null){
				boolean bWhere = false;
				if ((fornecedor.getId() != null)&& (fornecedor.getId() > 0)){
					sql += " where idFornecedor ="+fornecedor.getId();
					bWhere = true;
				}
				if ((fornecedor.getCnpj() != null) && (!fornecedor.getCnpj().equals(""))){
					if (bWhere){
						sql += " and";
					} else {
						sql += " where";
					}
					sql += " cnpj = '"+fornecedor.getCnpj()+"'";					
				}
			}
			System.out.println(sql);
			Database database = new Database();
			Statement stmt = database.getConnection().createStatement();
			ResultSet rst = stmt.executeQuery(sql);
			Vector vetor = new Vector();
			while (rst.next()){
				Fornecedor fornecedorAux = new Fornecedor();
				fornecedorAux.setId(rst.getInt("idFornecedor"));
				fornecedorAux.setBairro(rst.getString("bairro"));
				fornecedorAux.setCep(rst.getString("cep"));
				fornecedorAux.setCidade(rst.getString("cidade"));
				fornecedorAux.setCnpj(rst.getString("cnpj"));
				fornecedorAux.setEmail(rst.getString("email"));
				fornecedorAux.setEstado(rst.getString("estado"));
				fornecedorAux.setInscEstadual(rst.getString("inscEstadual"));
				fornecedorAux.setNumero(rst.getString("numero"));
				fornecedorAux.setRazaoSocial(rst.getString("razaoSocial"));
				fornecedorAux.setRua(rst.getString("rua"));
				fornecedorAux.setSite(rst.getString("site"));
				fornecedorAux.setTelefone(rst.getString("telefone"));
				vetor.add(fornecedorAux);
			}
			return (Fornecedor[]) vetor.toArray(new Fornecedor[vetor.size()]);
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
			return null;
		}
	}

	public Fornecedor findByPrimaryKey(Fornecedor fornecedor){
		if ((fornecedor != null) && (fornecedor.getId() != null)){
			Fornecedor fornecedorAux = new Fornecedor();
			fornecedorAux.setId(fornecedor.getId());
			Fornecedor lista[] = this.find(fornecedorAux);
			if (lista.length > 0){
				return lista[0];
			}			
		}
		return null;
	}
}
